﻿using System;
using System.Data;
using System.Windows.Forms;
using AcessaDados = AcessaDadosBD;
using AcessaDadosBD.Repositorios;
using docTissV2.Classes;
using docTissV2.Enumeradores;

namespace docTissV2
{
    public partial class uc_Login : UserControl
    {
        private uc_Configuracoes ucConf = null;
        
        public uc_Login()
        {
            InitializeComponent();
            txtLogin.Focus();
        }

        public uc_Login(uc_Configuracoes uc)
        {
            InitializeComponent();
            txtLogin.Focus();
            this.ucConf = uc;
        }

        private void btnLogar_Click(object sender, EventArgs e)
        {
            if (txtLogin.Text == "")
                MessageBox.Show(btnLogar, " Login obrigatório ");
            else if (txtSenha.Text == "")
                MessageBox.Show(btnLogar, " Senha obrigatória ");
            else
            {
                string senhaHash = AddinUtils.CalculateMD5Hash(txtSenha.Text);

                try
                {
                    AcessaDados.Login login = (new LoginRepository(AddinUtils.Command)).GetByUsernamePassword(txtLogin.Text, senhaHash);
                    AddinUtils.UsuarioID = login.ID;
                    AddinUtils.PrestadorNome = ((new PrestadorRepository(AddinUtils.Command)).GetById(login.ID)).Nome;

                    try
                    {
                        ClinicaHospitalRepository repositorioClinicaHospital = new ClinicaHospitalRepository(AddinUtils.Command);
                        AcessaDados.ClinicaHospital clinicaHospital = repositorioClinicaHospital.GetById(login.ID);
                        AddinUtils.TipoPrestador = TipoPrestador.Hospital_Clinica;
                        AddinUtils.CPF_CNPJ = clinicaHospital.CNPJ;
                    }
                    catch (Exception)
                    {
                        ProfissionalRepository repositorioProfissional = new ProfissionalRepository(AddinUtils.Command);
                        AcessaDados.Profissional profissional = repositorioProfissional.GetById(login.ID);
                        AddinUtils.TipoPrestador = TipoPrestador.Profissional;
                        AddinUtils.CPF_CNPJ = profissional.CPF;
                    }

                    if (ucConf == null)
                    {
                        Globals.Ribbons.rbbDocTiss.tbtnGerenciarGuias.Enabled = true;
                        Globals.Ribbons.rbbDocTiss.tbtnGerenciarGuias.Checked = true;
                        Globals.ThisAddIn.GerenciaGuiaCTP = Globals.ThisAddIn.CustomTaskPanes.Add(new uc_GerenciaGuia(), "Gerenciador de Guias TISS");
                        Globals.ThisAddIn.GerenciaGuiaCTP.DockPosition = Microsoft.Office.Core.MsoCTPDockPosition.msoCTPDockPositionLeft;
                        Globals.ThisAddIn.GerenciaGuiaCTP.Width = 315;
                        Globals.ThisAddIn.GerenciaGuiaCTP.Visible = true;
                    }
                    else
                    {
                        ucConf.carregaOperadorasFiliadas();
                    }
                        Globals.ThisAddIn.CustomTaskPanes.Remove(Globals.ThisAddIn.LoginCTP);
                   
                }
                catch (Exception ex)
                {
                    MessageBox.Show(btnLogar, "Login ou senha inválidos!");
                    limparCampos();
                }
            }
        }

        private void limparCampos()
        {
            txtLogin.Text = "";
            txtSenha.Text = "";
        }

       /*public uc_Login(uc_ModConfig uc)
        {
            InitializeComponent();
            txtLogin.Focus();
            this.ucModConf = uc;
        }

        private void limpaCampos()
        {
            txtLogin.Text = "";
            txtSenha.Text = "";
        }

        private void btnLogar_Click(object sender, EventArgs e)
        {
            if (txtLogin.Text == "")
                MessageBox.Show(btnLogar, " Login obrigatório ");
            else if (txtSenha.Text == "")
                MessageBox.Show(btnLogar, " Senha obrigatória ");
            else
            {
                string senhaHash = AddinUtils.CalculateMD5Hash(txtSenha.Text);
                DataTable dt = CommandModConf.verificaLogin(null, txtLogin.Text, senhaHash);                
                if (dt.Rows.Count == 0)
                
                {
                    MessageBox.Show(btnLogar, "Login ou senha inválidos!");
                    limpaCampos();
                }
                else
                {
                    if (ucModConf == null)
                    {
                        Globals.Ribbons.Ribbon1.grpAcoes.Visible = true;
                        Globals.Ribbons.Ribbon1.grpProcedimentos.Visible = true;
                        Globals.Ribbons.Ribbon1.btnAcompanhar.Enabled = true;
                        Globals.Ribbons.Ribbon1.btnDemonstrativos.Enabled = true;

                        Globals.ThisAddIn.UsuarioID = Convert.ToInt64(dt.Rows[0]["ID"].ToString());
                        Globals.ThisAddIn.PrestadorNome = dt.Rows[0]["nome"].ToString();

                        Globals.Ribbons.Ribbon1.btnAcompanhar.Checked = true;
                        Globals.ThisAddIn.AcompanhaGuiaCTP = Globals.ThisAddIn.CustomTaskPanes.Add(new uc_AcompanhaGuia(), "Lotes");
                        Globals.ThisAddIn.AcompanhaGuiaCTP.DockPosition = Microsoft.Office.Core.MsoCTPDockPosition.msoCTPDockPositionLeft;
                        Globals.ThisAddIn.AcompanhaGuiaCTP.Width = 315;
                        Globals.ThisAddIn.AcompanhaGuiaCTP.Visible = true;
                    }
                    else
                    {
                        ucModConf.UsuarioID = Convert.ToInt64(dt.Rows[0]["ID"].ToString());
                        ucModConf.NomeUsuario = dt.Rows[0]["nome"].ToString();
                        ucModConf.lblMensagem.Text = "Usuário autenticado: " + dt.Rows[0]["nome"].ToString();

                        ucModConf.gpbConfOperadora.Enabled = true;
                        ucModConf.btnAddOperadora.Enabled = true;
                        ucModConf.btnRemoveOp.Enabled = true;
                        ucModConf.carregaOperadorasFiliadas();
                    }

                    Globals.ThisAddIn.CustomTaskPanes.Remove(Globals.ThisAddIn.LoginCTP);
                }
            }
        }*/
    }
}
